package com.zhihuishu.micro.course.service;

import java.util.List;
import java.util.Map;

import com.zhihuishu.micro.course.dto.CourseSpeakerDto;

/**
 * 
 */
public interface CourseSpeakerService {
   
    /**
     * 
     * @Description 新增
     * @author shehuaiyang
     * @date 2016年9月13日 上午9:48:06
     * @modifyNote 
     * @param csd
     * @return
     */
	CourseSpeakerDto insert(CourseSpeakerDto csd);
	/**
	 * 
	 * @Description 修改
	 * @author shehuaiyang
	 * @date 2016年9月13日 上午11:27:06
	 * @modifyNote 
	 * @param csd
	 */
	CourseSpeakerDto update(CourseSpeakerDto csd);
	/**
	 * 
	 * @Description 查询
	 * @author shehuaiyang
	 * @date 2016年9月13日 上午9:48:38
	 * @modifyNote 
	 * @param userId
	 * @param type
	 * @return
	 */
	List<CourseSpeakerDto> searchCourseSpeakerList(long userId);
	 /**
	  * 
	  * @Description 删除
	  * @author shehuaiyang
	  * @date 2016年9月13日 下午5:28:01
	  * @modifyNote 
	  * @param csd
	  */
	void delete(Integer id);
	/**
	 * 
	 * @Description 查询数目
	 * @author shehuaiyang
	 * @date 2016年9月14日 下午4:43:18
	 * @modifyNote 
	 * @param id
	 * @return
	 */
	int countCourseSpeaker(Integer id);
    /**
     * 
     * @Description 查询教师团队或者是课程负责人
     * @author shehuaiyang
     * @date 2016年9月14日 下午4:44:22
     * @modifyNote 
     * @param id
     * @return
     */
	CourseSpeakerDto  findCourseSpeakerById(Integer id);

	List<Integer> findCourseSpeakerTypeList(Long courseId);
	/**
	 * 查询教学团队是否完整
	 * @author yulijin
	 * @date 2016年10月14日 上午10:26:46 
	 * @param courseId 课程id   type:2 表示新版建课   4 表示海外建课
	 * @return 总策划    key:plan value:true表示完整   false表示不完整
	 *        教学团队   key:team value:true表示完整   false表示不完整
	 *           全部   key:all  value:true表示完整   false表示不完整  (海外建课) 
	 */
	Map<String,Boolean> findCourseSpeakerIsComplete(Long courseId,int type);
	
	/**
	 * 更新教学团队排序序号
	 * @author ztl
	 * @date 2017年3月22日下午2:10:40
	 * @param paramMap
	 */
	void updateCourseSpeakerOrderNumber (Map<String, Object> paramMap);
	
	/**
	 * 获取教学团队表所有课程ID
	 * @author ztl
	 * @date 2017年3月22日下午9:17:24
	 * @return
	 */
	List<Integer> getAllCourseId ();
	
	/**
	 * 获取教学团队表所有主键ID
	 * @author ztl
	 * @date 2017年3月22日下午9:17:24
	 * @return
	 */
	List<Integer> getAllCourseSpeakerId ();
	
	/**
	 * 补全教学团队老数据的排序号
	 * @author ztl
	 * @date 2017年3月22日下午9:18:05
	 * @param courseId
	 * @param userType
	 */
	void setOrderNumebrForOldCourseSpeaker(Integer courseId, Integer userType);
	
	/**
	 * 根据课程ID和教学团队类型获取最大排序号
	 * @author ztl
	 * @date 2017年3月22日下午10:35:55
	 * @param courseId
	 * @param userType
	 * @return  无则返回0
	 */
	Integer getMaxOrderNumberByCourseIdAndUserType(Long courseId, Integer userType);
}
